package com.weiyuwqj.server.mapper;

import com.weiyuwqj.api.model.BasUser;
import com.weiyuwqj.api.model.BusGuaranteeSecurity;
import com.weiyuwqj.api.model.vo.BasUserInfoVo;
import com.weiyuwqj.api.model.vo.UserInvestVo;
import com.weiyuwqj.api.model.vo.UserVo;
import org.apache.ibatis.annotations.Param;
import org.springframework.stereotype.Repository;
import tk.mybatis.mapper.common.Mapper;

import java.util.List;
import java.util.Map;
@Repository
public interface BasUserMapper extends Mapper<BasUser> {

    List<UserVo> getList(Map map);

    //后台首页昨日今日注册数量
    Map countUserByTime();

    BasUser getUserByUsername(String username);

    //根据userid获取基本信息
    BasUserInfoVo getUserInfoById(Integer userId);

    //后台首页统计每天登陆人数
    Integer countUserLoginNum();

    //统计用户
    List<Map> statUser(Map map);

    //插入
    int doRegister(BasUser user);

    Integer modifyPassword(@Param("mobile")String mobile, @Param("newPassword")String newPassword);

    UserVo getUserByMobile(String mobile);

    Integer modifyMobile(@Param("mobile")String mobile, @Param("id")Integer id);

    Integer modifyUsername(@Param("username")String username, @Param("userId")Integer userId);

    Integer mobilePasswordByMobile(@Param("password")String password, @Param("mobile")String mobile);

    List<UserInvestVo> listUserInvest(Map map);

    List<UserInvestVo> listByUserName(List<String> list);

    List<UserInvestVo> listByInviteUser(List<String> inviteUserNameList);

    //统计
    List<Map> getRegionCountUserList(Map map);

    //注册人数统计
    Integer countUserNum();

    //获取投资人信息
    BasUserInfoVo getUserByInvestId(Integer investId);

    //获取借款人信息
    BasUserInfoVo getBorrowerByInvestId(Integer investId);

    //获取担保人信息
    BusGuaranteeSecurity getGuarantorByInvestId(Integer investId);

    //获取业务员列表
    List<UserVo> listUser(Map map);

    BasUser getUserByThirdpart(Map map);

    /**
     * 修改用户平台编号
     * @param platformId 用户平台
     * @param userId 用户ID
     * @return 修改返回行
     */
	Integer mobilePlatformId(@Param("platformId") String platformId, @Param("userId") Integer userId);


    /**
     * 根据平台客户号查询信息
     * @param platformId 客户平台ID
     * @return 平台客户信息
     */
    BasUser getUserByPlatformId(String platformId);

    List<UserVo> getAssetList(Integer assetId);

	/**
	 * 根据条件获取用户集合
	 *
	 * @param param 条件
	 * @return 用户集合
	 */
	List<BasUser> getEnterpriesByParam(Map<String, Object> param);
}